<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use Hash;
use DB;
class UserController extends Controller
{
    //打开数据添加页面
    public function getAdd()
    {
        return view('admin.user.add');
    }
    //数据插入
    public function postInsert(Request $request)
    {
        //表单验证
        $this->validate($request,[
            'username'=>'required|regex:/^\w{8,20}$/|unique:user,username',
            'password'=>'required|regex:/^\w{8,20}$/|same:repassword'
            ],[
            'username.required'=>'用户名不能为空',
            'username.regex'=>'用户名格式不正确',
            'username.unique'=>'用户名已存在',
            'password.required'=>'密码不能为空',
            'password.regex'=>'密码格式不正确',
            'password.same'=>'两次输入密码不一致'
            ]);
        //获取提交值
        $data=$request->except(['_token','repassword']);

        $data['password']=Hash::make($data['password']);
        //文件处理
        if($request->hasFile('photo')){
            //后缀名
            $suffix = $request->file('photo')->getClientOriginalExtension();
            //拼接文件名
            $fileName= time().rand(100000,999999).'.'.$suffix;
            //目录名称
            $dir='./uploads/'.date('Ymd');
            //一定文件
            $request->file('photo')->move($dir,$fileName);
            //将绝对路径写入数据库
            $data['photo']=trim($dir.'/'.$fileName,'.');
        }
        //数据写入数据库
        $res=DB::table('user')->insert($data);
        if($res){
            return redirect('user/list')->with('info','添加成功');
        }else{
            return back()->with('error','添加失败');
        }
    }


    //////////////////////////这里是前台插入用户 start///////////////////////////////
    //数据插入
    public function postInsertQian(Request $request)
    {
        //表单验证
        $this->validate($request,[
            'username'=>'required|regex:/^\w{8,20}$/|unique:user,username',
            'password'=>'required|regex:/^\w{8,20}$/|same:repassword'
            ],[
            'username.required'=>'用户名不能为空',
            'username.regex'=>'用户名格式不正确',
            'username.unique'=>'用户名已存在',
            'password.required'=>'密码不能为空',
            'password.regex'=>'密码格式不正确',
            'password.same'=>'两次输入密码不一致'
            ]);
        //获取提交值
        $data=$request->except(['_token','repassword']);

        $data['password']=Hash::make($data['password']);
        //文件处理
        if($request->hasFile('photo')){
            //后缀名
            $suffix = $request->file('photo')->getClientOriginalExtension();
            //拼接文件名
            $fileName= time().rand(100000,999999).'.'.$suffix;
            //目录名称
            $dir='./uploads/'.date('Ymd');
            //一定文件
            $request->file('photo')->move($dir,$fileName);
            //将绝对路径写入数据库
            $data['photo']=trim($dir.'/'.$fileName,'.');
        }
        //数据写入数据库
        $res=DB::table('user')->insert($data);
        if($res){
            return redirect('/login')->with('info','添加成功');
        }else{
            return back()->with('error','添加失败');
        }
    }
    //////////////////////////这里是前台插入用户 end///////////////////////////////


    //列表显示
    public function getList(Request $request)
    {
        //模糊查询获取
        // $keyword=$request->input('keyword');
        // if(empty($keyword)){
        //     $users=DB::table('user')->orderBy('id','desc')->paginate($request->input('num',10));
        // }else{
        //     $users=DB::table('user')->orderBy('id','desc')->where('username','like','%'.$keyword.'%')->paginate($request->input('num',10));
        // }
        $users=DB::table('user')->
            orderBy('id','desc')->
            where(function($query)use($request){
                $keyword=$request->input('keyword');
                if($keyword){
                    $query->where('username','like','%'.$keyword.'%');
                }
            })
            ->paginate($request->input('num',10));
        return view('admin.user.list',['users'=>$users,'request'=>$request]);
    }
    //跳转到更改数据页面
    public function getEdit(Request $request)
    {
        $id=$request->input('id');
        $user=DB::table('user')->where('id',$id)->first();
        // dd($user);
        return view('admin.user.edit',['user'=>$user]);
    }
    //信息修改
    public function postUpdate(Request $request)
    {
        //表单验证
        $this->validate($request,[
            'username'=>'required|regex:/^\w{8,20}$/',
            ],[
            'username.required'=>'用户名不能为空',
            'username.regex'=>'用户名格式不正确',
            ]);
        //获取提交值
        $data=$request->except(['_token','id']);
        //文件处理
        if($request->hasFile('photo')){
            //后缀名
            $suffix = $request->file('photo')->getClientOriginalExtension();
            //拼接文件名
            $fileName= time().rand(100000,999999).'.'.$suffix;
            //目录名称
            $dir='./uploads/'.date('Ymd');
            //一定文件
            $request->file('photo')->move($dir,$fileName);
            //将绝对路径写入数据库
            $data['photo']=trim($dir.'/'.$fileName,'.');
        }
        //数据写入数据库
        $res=DB::table('user')->where('id',$request->input('id'))->update($data);
        if($res){
            return redirect('user/list')->with('info','修改成功');
        }else{
            return back()->with('error','修改失败');
        }
    }
    //信息删除
    public function getDrop(Request $request)
    {
        $id=$request->input('id');
        $path=DB::table('user')->select('photo')->where('id',$id)->first();
        @unlink('.'.$path->photo);
        $res=DB::table('user')->where('id',$id)->delete();
        if($res){
            return redirect('user/list')->with('info','删除成功');
        }else{
            return back()->with('error','删除失败');
        }
    }

    public function getDetail(Request $request)
    {
        $id=$request->input('id');
        // dd($id);
        $userdetail=DB::table('user') 
        ->join('userdetail','user.id','=','userdetail.user_id')
        ->where('user.id','=',$id)
        ->first();
        return view('admin.user.detail',['detail',$userdetail]);
    }
}
